//package com.culturalCenter.dataCenter.SparkOnHbaseTest;
//
//
//import com.culturalCenter.dataCenter.globalconfig.hbasee.HbaseTemplate;
//import org.apache.hadoop.conf.Configuration;
//import org.apache.hadoop.hbase.HBaseConfiguration;
//import org.apache.hadoop.hbase.client.Result;
//import org.apache.hadoop.hbase.io.ImmutableBytesWritable;
//import org.apache.hadoop.hbase.mapreduce.TableInputFormat;
//import org.apache.hadoop.hbase.util.Bytes;
//import org.apache.spark.api.java.JavaPairRDD;
//import org.apache.spark.api.java.JavaRDD;
//import org.apache.spark.api.java.JavaSparkContext;
//import org.apache.spark.api.java.function.Function;
//import org.apache.spark.api.java.function.VoidFunction;
//import org.apache.spark.sql.*;
//import org.apache.spark.sql.types.DataTypes;
//import org.apache.spark.sql.types.StructField;
//import org.apache.spark.sql.types.StructType;
//import org.springframework.stereotype.Component;
//import scala.Serializable;
//import scala.Tuple2;
//
//import javax.annotation.Resource;
//import java.util.ArrayList;
//import java.util.List;
//
////@Component
//@Slf4j
//public class SparkOnHbaseTest1 implements Serializable {
//
//
//
//    public void getHbase() {
//
//
//        SparkSession spark = SparkSession.builder().master("local[*]").appName("HBASEDATA")
//                .getOrCreate();
//
//        JavaSparkContext sc = new JavaSparkContext(spark.sparkContext());
//
//        String tableName = "users";
//        String FAMILY = "personal";
//        String COLUM_ID = "id";
//        String COLUM_NAME = "name";
//        String COLUM_PHONE = "phone";
//
//        // Hbase配置
//        Configuration hconf = HBaseConfiguration.create();
//
//        hconf.set(TableInputFormat.INPUT_TABLE, tableName);
//        //读取指定的数据列
//
//        hconf.set(TableInputFormat.SCAN_COLUMNS, "personal:name personal:phone personal:id");
//        try {
//
//            //读HBase数据转化成RDD
//            JavaPairRDD<ImmutableBytesWritable, Result> hbaseRDD = sc.newAPIHadoopRDD(hconf, TableInputFormat.class, ImmutableBytesWritable.class, Result.class);
//            hbaseRDD.cache();// 对myRDD进行缓存
//            long count = hbaseRDD.count();
//
//            JavaRDD<Row> personsRDD = hbaseRDD.map(new Function<Tuple2<ImmutableBytesWritable,Result>,Row>() {
//
//                @Override
//                public Row call(Tuple2<ImmutableBytesWritable, Result> tuple) throws Exception {
//                    Result result = tuple._2();
//                    String rowkey = Bytes.toString(result.getRow());
//                    String id = Bytes.toString(result.getValue(Bytes.toBytes(FAMILY), Bytes.toBytes(COLUM_ID)));
//                    String name = Bytes.toString(result.getValue(Bytes.toBytes(FAMILY), Bytes.toBytes(COLUM_NAME)));
//                    String phone = Bytes.toString(result.getValue(Bytes.toBytes(FAMILY), Bytes.toBytes(COLUM_PHONE)));
//
//                    //这一点可以直接转化为row类型
//                    return (Row) RowFactory.create(rowkey,id,name,phone);
//                }
//
//            });
//
//            List<StructField> structFields=new ArrayList<StructField>();
//            structFields.add(DataTypes.createStructField(COLUM_ID, DataTypes.StringType, true));
//            structFields.add(DataTypes.createStructField(COLUM_NAME, DataTypes.StringType, true));
//            structFields.add(DataTypes.createStructField(COLUM_PHONE, DataTypes.StringType, true));
//
//            StructType schema=DataTypes.createStructType(structFields);
//
//
//            Dataset stuDf=spark.createDataFrame(personsRDD, schema);
//            //stuDf.slect("id","name","age").write().mode(SaveMode.Append).parquet("par");
//            stuDf.printSchema();
//            stuDf.createOrReplaceTempView("Users");
//            Dataset<Row> nameDf=spark.sql("select * from Users ");
//            nameDf.show();
//
//        } catch (Exception e) {
//            log.error(e.getMessage(), e);
//        } finally {
//        }
//    }
//
//    public class Users implements Serializable{
//        private String id;
//        private String name;
//        private String phone;
//
//        public String getId() {
//            return id;
//        }
//
//        public void setId(String id) {
//            this.id = id;
//        }
//
//        public String getName() {
//            return name;
//        }
//
//        public void setName(String name) {
//            this.name = name;
//        }
//
//        public String getPhone() {
//            return phone;
//        }
//
//        public void setPhone(String phone) {
//            this.phone = phone;
//        }
//    }
//}
